﻿using BCCommon;
using BCDto.MySql.MaterialConfiguration;
using System;
using System.Collections.Generic;
using System.Text;

namespace BCService.WebDomainService.MaterialConfigurationService
{
    /// <summary>
    /// 素材服务接口
    /// </summary>
    public interface IMaterialConfigurationService
    {
        /// <summary>
        /// 创建素材信息
        /// </summary>
        /// <param name="materialConfigurationRequestDto">素材信息模型</param>
        /// <param name="editor">修改者</param>
        /// <returns></returns>
        MaterialConfigurationDto Create(MaterialConfigurationRequestDto materialConfigurationRequestDto,string editor);

        /// <summary>
        /// 删除素材信息
        /// </summary>
        /// <param name="materialConfigurationId">素材ID</param>
        /// <returns></returns>
        int Delete(int materialConfigurationId);


        /// <summary>
        /// 修改素材信息
        /// </summary>
        /// <param name="materialConfigurationId">素材ID</param>
        /// <param name="materialConfigurationSimPutDto">素材信息模型</param>
        /// <param name="editor">编辑者</param>
        /// <returns></returns>
        MaterialConfigurationDto Update(int materialConfigurationId, MaterialConfigurationSimPutDto materialConfigurationSimPutDto,string editor);

        /// <summary>
        /// 获取一条素材信息
        /// </summary>
        /// <param name="materialConfigurationId">素材Id</param>
        /// <returns></returns>
        MaterialConfigurationDto Get(int materialConfigurationId);
        /// <summary>
        /// 获取一条素材信息
        /// </summary>
        /// <param name="searchKey">字典对应键</param>
        /// <returns></returns>
        MaterialConfigurationDto Get(string searchKey);
        /// <summary>
        /// 获取素材信息列表
        /// </summary>
        /// <param name="materialName">素材名称</param>
        /// <param name="materialType">素材类型</param>
        /// <param name="remark">素材备注</param>
        /// <param name="usageGroupCode">用途组编码</param> 
        /// <param name="start">开始时间</param>
        /// <param name="end">结束时间</param>
        /// <param name="ascending">是否升序</param>       
        /// <param name="pageIndex"></param>
        /// <param name="pageSize"></param>
        /// <returns></returns>
        PageableList<MaterialConfigurationDto> List(string materialName, string materialType, string remark,string usageGroupCode, DateTime? start, DateTime? end, bool? ascending,  int pageIndex = 1, int pageSize = 10);
    }
}
